fatfish
2023 , 03 August

בדיקות קצה עם מערכת Playwright

 

אחד הפרויקטים המרגשים שהתחלנו השנה הוא בעבודה עם האוניברסיטה העברית על מערכת בדיקת סיכויי קבלה למועמדים. המשתמשים יכולים לבחור בין כל החוגים שהאוניברסיטה מציעה, להזין את הציונים שלהם (ציוני בגרות, פסיכומטרי, מכינה אקדמית ותואר קודם) ולקבל תשובה מיידית האם הם יכולים להתקבל לחוג שבחרו, ואם לא אז איזה ציון דרוש להם כדי להתקבל.

החישוב של סיכויי הקבלה הוא די מורכב - לכל חוג סף קבלה שונה, כל ציון שהמשתמש מזין יכול לשמש ביותר מערוץ קבלה אחד (לדוגמה ציון פסיכומטרי יכול להוות קבלה ישירה אם הוא עומד בסף, או לשמש בשקלול יחד עם ממוצע בגרות), ציונים גבוהים מספיק יכולים להקנות מלגת הצטיינות למועמד וכו' וכו'. בקיצור - מדובר במערכת מורכבת שצריכה להגיב בצורה נכונה לאינספור מקרים שונים.

אחת הבעיות העיקריות שנתקלנו בה בשלבים המתקדמים של העבודה היא התחזוקה והבדיקות של כל המקרים ותתי-המקרים האלה. כמה פעמים קרה שפתרון באג אחד יצר בעיה במקום אחר, וגם כשלא - בכל שינוי לאתר היה צורך לעשות בדיקות יסודיות רבות כדי לוודא שהמערכת עדיין עומדת בדרישות.

 

הגענו למסקנה שאין הגיון בלהמשיך לעשות את אותן הבדיקות בצורה ידנית ויש צורך באוטומציה. אחרי השוואה של כמה ספריות לבדיקה אוטומטית בחרנו בPlayewright - פריימוורק בדיקות בקוד פתוח שמפתחת מייקרוסופט, שכתוב ב-Node.js והוא חלק ממנהל החבילות npm, ככה שאפשר להוריד ולהריץ אותו בקלות.

פליירייט מאפשרת לכתוב קוד שעושה אוטומציה לפעולות משתמש בדפדפן (התחברות לאתר באמצעות כתובת URL, לחיצה על כפתורים, הזנת טקסט בשדות וכו') ובודק האם התקבלה התוצאה הרצויה - טקסט או תמונה ספציפיים שנוכחים באתר או אפילו צילום מסך והשוואה שלו לצילום מסך ששמור במערכת כנכון.

 

בין היתרונות הרבים שלה, פליירייט מאפשרת כתיבת בדיקות באמצעות UI - המערכת מריצה דפדפן ומקליטה את הפעולות שמבצע המפתח ואז מציגה את הקוד שדרוש כדי לבצע את הפעולות שהוקלטו. בנוסף, כשמריצים בדיקה והיא נכשלת אפשר לקבל תצוגה שלב אחרי שלב של הבדיקה ולראות בדיוק איפה ולמה היא נכשלה.

מכיון שהבדיקות רצות על דפדפן אוטומטי אפשר להשתמש בהן בשלבים השונים של המוצר באמצעות שינוי ה-URL, וככה להריץ את הבדיקות על השרת המקומי בשלב הפיתוח, על שרת הטסטינג בשלב הבדיקות ועל שרת הפרודקשן כשהאתר באוויר, ולוודא ששום דבר לא נשבר במהלך הדרך.

 

הרצת הבדיקות נעשית דרך הטרמינל ויכולה להתבצע ברקע, בזמן עבודה. אפשר להריץ אותן אחת לזמן נקוב בעזרת Cron job ו/או לשלב את הבדיקות בפייפליין CI/CD ככה שבכל דחיפה של שינוי לאתר יתבצעו הבדיקות מיידית ויתריעו אם יש תקלה. בנוסף לכל היתרונות האלה, אפשר גם להריץ את פליירייט על כמה סוגי דפדפנים (chrome, edge, firefox, webkit, chromium והגרסה של כל אחד מהם לנייד) וגם להריץ כמה בדיקות במקביל על ת'רדים שונים.

 

לסיכום, העבודה עם Playwright העלתה בכמה רמות את היכולת שלנו לתחזק אתרים, לתפוס באגים לפני שהם מגיעים לפרודקשן ולוודא שהמוצרים עומדים בדרישות שלנו ושל הלקוחות שלנו.